<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');

require_once APPPATH . 'controllers/admin.php';

/**
 * Контроллер изменения пароля входа в систему
 *
 * @package CoreFramework
 * @version 1.0
 * @author Gennadiy Kozlenko
 */
class Admin_Edit_Password extends Admin {
   
   /**
    * Конструктор класса
    *
    * @access public
    * @return Admin_Edit_Password
    */
   function Admin_Edit_Password() {
      parent::Admin();
      $this->set_menu(2, 2);
   } // end Admin_Edit_Password
   
   /**
    * Метод по умолчанию
    *
    * @access public
    */
   function index() {
      $data = array();
      // Валидируем и, если нужно, изменяем пароль
      if (false !== $this->input->post('edit')) {
         $this->load->library('validation');
         $rules = array(
            'oldpass'  => 'trim|required|callback_check_password',
            'newpass'  => 'trim|required|min_length[' . $this->variables->get('password_min_length') . ']|matches[passconf]',
            'passconf' => 'trim|required',
         );
         $this->validation->set_rules($rules);
         $result = $this->validation->run();
         // Получаем из поста поля
         $password = $this->validation->newpass;
         if ($result) {
            if ($this->_change_password('admin', md5($password))) {
               $this->set_message($this->lang->line('edit_password_succ'), 'info', true);
               $this->redirect($this->get_controller());
            }
            // Если сюда пришли, значит не все в порядке...
            $this->set_message($this->lang->line('edit_password_error'), 'error');
         }
      }
      // Выводим
      $this->set_content($this->parser->parse('admin/edit_password.html', $data, true));
      $this->display();
   } // end index
   
   /**
    * Функция валидирования пароля
    *
    * @access public
    * @param string $name
    * @return boolean
    */
   function check_password($password) {
      return md5($password) === $this->variables->get('admin_password');
   } // end check_name
   
}
